package com.jack.cms.common.constant.factory;

import java.util.List;

import org.springframework.cache.annotation.Cacheable;

import com.jack.cms.common.constant.cache.Cache;
import com.jack.cms.common.constant.cache.CacheKey;
import com.jack.cms.common.persistence.model.Dict;

/**
 * 常量的生产工厂
 *
 * @author JackYuan
 * @date 2017年2月13日 下午10:55:21
 */
public interface IConstantFactory {

	/**
	 * 根据用户id获取用户名称
	 *
	 * @author jack
	 * @Date 2017/5/9 23:41
	 */
	public String getUserNameById(Integer userId);

	/**
     * 根据用户id获取用户账号
     *
     * @author jack
     * @date 2017年5月16日21:55:371
     */
    public String getUserAccountById(Integer userId);

	/**
     * 通过角色ids获取角色名称
     */
    @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.ROLES_NAME + "'+#roleIds")
    public String getRoleName(String roleIds);

	/**
     * 通过角色id获取角色名称
     */
    @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_NAME + "'+#roleId")
    public String getSingleRoleName(Integer roleId);

	/**
     * 通过角色id获取角色英文名称
     */
    @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.SINGLE_ROLE_TIP + "'+#roleId")
    public String getSingleRoleTip(Integer roleId);

	/**
     * 获取部门名称
     */
    @Cacheable(value = Cache.CONSTANT, key = "'" + CacheKey.DEPT_NAME + "'+#deptId")
    public String getDeptName(Integer deptId) ;

	/**
     * 获取菜单的名称们(多个)
     */
    public String getMenuNames(String menuIds);

	/**
     * 获取菜单名称
     */
    public String getMenuName(Integer menuId);

	/**
     * 获取菜单名称通过编号
     */
    public String getMenuNameByCode(String code);

	/**
     * 获取字典名称
     */
    public String getDictName(Integer dictId);

	/**
     * 获取通知标题
     */
    public String getNoticeTitle(Integer dictId);

	/**
     * 获取性别名称
     */
    public String getSexName(Integer sex);

	/**
     * 获取用户登录状态
     */
    public String getStatusName(Integer status) ;
    
	/**
     * 获取菜单状态
     */
    public String getMenuStatusName(Integer status);

	/**
     * 查询字典
     */
    public List<Dict> findInDict(Integer id);
    
	/**
     * 获取被缓存的对象(用户删除业务)
     */
    public String getCacheObject(String para);

}
